// RAP [bm]: missing file handling - download/upload?
///*******************************************************************************
// * Copyright (c) 2005, 2010 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.internal.wizards.preferences;
//
//import java.io.File;
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.core.runtime.preferences.IEclipsePreferences;
//import org.eclipse.core.runtime.preferences.IPreferenceFilter;
//import org.eclipse.core.runtime.preferences.IPreferencesService;
//import org.eclipse.jface.dialogs.MessageDialog;
//import org.eclipse.swt.SWT;
//import org.eclipse.swt.widgets.Composite;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
//import org.eclipse.ui.internal.WorkbenchPlugin;
//import org.eclipse.ui.internal.preferences.PreferenceTransferElement;
//
///**
// * Page 1 of the base preference export Wizard
// * 
// * @since 3.1
// */
//public class WizardPreferencesExportPage1 extends WizardPreferencesPage  {
//
//	// constants
//	private static final String PREFERENCESEXPORTPAGE1 = "preferencesExportPage1"; // //$NON-NLS-1$
//
//	/**
//	 * Create an instance of this class
//	 */
//	protected WizardPreferencesExportPage1(String name) {
//		super(name);
//		setTitle(PreferencesMessages.WizardPreferencesExportPage1_exportTitle);
//		setDescription(PreferencesMessages.WizardPreferencesExportPage1_exportDescription);
//	}
//
//	/**
//	 * Create an instance of this class
//	 */
//	public WizardPreferencesExportPage1() {
//		this(PREFERENCESEXPORTPAGE1);
//	}
//
//	protected String getOutputSuffix() {
//    	return ".epf"; //$NON-NLS-1$
//    }
//	
//	/**
//	 * Answer the contents of self's destination specification widget
//	 * 
//	 * @return java.lang.String
//	 */
//	protected String getDestinationValue() {
//		String idealSuffix = getOutputSuffix();
//        String destinationText = super.getDestinationValue();
//
//        // only append a suffix if the destination doesn't already have a . in 
//        // its last path segment.  
//        // Also prevent the user from selecting a directory.  Allowing this will 
//        // create a ".epf" file in the directory
//        if (destinationText.length() != 0
//                && !destinationText.endsWith(File.separator)) {
//            int dotIndex = destinationText.lastIndexOf('.');
//            if (dotIndex != -1) {
//                // the last path seperator index
//                int pathSepIndex = destinationText.lastIndexOf(File.separator);
//                if (pathSepIndex != -1 && dotIndex < pathSepIndex) {
//                    destinationText += idealSuffix;
//                }
//            } else {
//                destinationText += idealSuffix;
//            }
//        }
//
//        return destinationText;
//    }
//
//		
//	protected String getAllButtonText() {
//		return PreferencesMessages.WizardPreferencesExportPage1_all;
//	}
//
//	protected String getChooseButtonText() {
//		return PreferencesMessages.WizardPreferencesExportPage1_choose;
//	}
//
//	/**
//	 * @param composite
//	 */
//	protected void createTransferArea(Composite composite) {
//		createTransfersList(composite);
//		createDestinationGroup(composite);
//		createOptionsGroup(composite);
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#
//	 * createControl(org.eclipse.swt.widgets.Composite)
//	 */
//	public void createControl(Composite parent) {
//		super.createControl(parent);
//		PlatformUI.getWorkbench().getHelpSystem()
//				.setHelp(getControl(), IWorkbenchHelpContextIds.PREFERENCES_EXPORT_WIZARD_PAGE);
//
//	}
//
//	/**
//	 * Answer the string to display in self as the destination type
//	 * 
//	 * @return java.lang.String
//	 */
//	protected String getDestinationLabel() {
//		return PreferencesMessages.WizardPreferencesExportPage1_file;
//	}
//
//	/*
//	 * return the PreferenceTransgerElements specified
//	 */
//	protected PreferenceTransferElement[] getTransfers() {
//		PreferenceTransferElement[] elements = super.getTransfers();
//		PreferenceTransferElement[] returnElements = new PreferenceTransferElement[elements.length];
//		IPreferenceFilter[] filters = new IPreferenceFilter[1];
//		IPreferenceFilter[] matches;
//		IPreferencesService service = Platform.getPreferencesService();
//		int count = 0;
//		try {
//			for (int i = 0; i < elements.length; i++) {
//				PreferenceTransferElement element = elements[i];
//				filters[0] = element.getFilter();
//				matches = service.matches((IEclipsePreferences) service
//						.getRootNode().node("instance"), filters); //$NON-NLS-1$
//				if (matches.length > 0) {
//					returnElements[count++] = element;
//				}
//			}
//			elements = new PreferenceTransferElement[count];
//			System.arraycopy(returnElements, 0, elements, 0, count);
//		} catch (CoreException e) {
//			WorkbenchPlugin.log(e.getMessage(), e);
//			return new PreferenceTransferElement[0];
//		}
//		return elements;
//	}
//
//	/**
//	 * @param transfers
//	 * @return <code>true</code> if the transfer was succesful, and
//	 *         <code>false</code> otherwise
//	 */
//	protected boolean transfer(IPreferenceFilter[] transfers) {
//		File exportFile = new File(getDestinationValue());
//		if (!ensureTargetIsValid(exportFile)) {
//			return false;
//		}
//		FileOutputStream fos = null;
//		try {
//			if (transfers.length > 0) {
//				try {
//					fos = new FileOutputStream(exportFile);
//				} catch (FileNotFoundException e) {
//					WorkbenchPlugin.log(e.getMessage(), e);
//					MessageDialog.open(MessageDialog.ERROR, getControl()
//							.getShell(), new String(), e.getLocalizedMessage(),
//							SWT.SHEET);
//					return false;
//				}
//				IPreferencesService service = Platform.getPreferencesService();
//				try {
//					service.exportPreferences(service.getRootNode(), transfers,
//							fos);
//				} catch (CoreException e) {
//					WorkbenchPlugin.log(e.getMessage(), e);
//					MessageDialog.open(MessageDialog.ERROR, getControl()
//							.getShell(), new String(), e.getLocalizedMessage(),
//							SWT.SHEET);
//					return false;
//				}
//			}
//		} finally {
//			if (fos != null) {
//				try {
//					fos.close();
//				} catch (IOException e) {
//					WorkbenchPlugin.log(e.getMessage(), e);
//					MessageDialog.open(MessageDialog.ERROR, getControl()
//							.getShell(), new String(), e.getLocalizedMessage(),
//							SWT.SHEET);
//					return false;
//				}
//			}
//		}
//		return true;
//	}
//
//	protected String getFileDialogTitle() {
//		return PreferencesMessages.WizardPreferencesExportPage1_title;
//	}
//
//	protected int getFileDialogStyle() {
//		return SWT.SAVE | SWT.SHEET;
//	}
//	
//	/* (non-Javadoc)
//	 * @see org.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#getInvalidDestinationMessage()
//	 */
//	protected String getInvalidDestinationMessage() {
//		return PreferencesMessages.WizardPreferencesExportPage1_noPrefFile;
//	}
//
//	/*
//	 * (non-Javadoc)
//	 * 
//	 * @seeorg.eclipse.ui.internal.wizards.preferences.WizardPreferencesPage#
//	 * shouldSaveTransferAll()
//	 */
//	protected boolean shouldSaveTransferAll() {
//		return true;
//	}
//}
